package ms.platform.plan.dao;

import java.util.List;
import java.util.Map;

import ms.platform.plan.model.ModelMeterPlan;

public interface BusModelMeterPlanDao {
	/**
	 * 材料信息新增
	 * @param map
	 * @return
	 */
	public void saveBusModelMeterPlan(ModelMeterPlan modelMeterPlan);
	
	/**
	 * 下发信息新增
	 * @param map
	 * @return
	 */
	public void saveBusMeterGiveRecord(ModelMeterPlan modelMeterPlan);
	
	/**
	 * 根据部品id查询材料信息
	 * @param id
	 * @return
	 */
	public List<ModelMeterPlan> queryBusModelMeterById(Integer id);
	
	/**
	 * 根据部品id查询材料信息
	 * @param id
	 * @return
	 */
	public ModelMeterPlan queryModelMeterById(Integer id);
	
	/**
	 * 根据id修改材料信息
	 * @param meter
	 * @return
	 */
	public void updateModelMeterById(ModelMeterPlan meter);
	
	/**
	 * 删除材料信息
	 * @param id
	 */
	public void deleteModelPlanMeterById(Integer id);
	
	/**
	 * 材料信息入库
	 * @param map
	 * @return
	 */
	public void saveBusModelMeterPlanFinished(ModelMeterPlan modelMeterPlan);
	
	/**
	 * 带条件分页查询list
	 * 
	 * @param map
	 * @return
	 */
	public List<ModelMeterPlan> queryPageBusModelMeterList(Map<String, Object> map);
	
	/**
	 * 分页查询获取总条数
	 * @param map
	 * @return
	 */
	public Integer queryBusModelMeterCount(Map<String, Object> map);
	
	/**
	 * 根据模具番号统计剩余库存
	 * @param modelCode
	 * @return
	 */
	public Integer sumInventoryByModelCode(String modelCode);
	/**
	 * 分页查询获取总条数
	 * @param map
	 * @return
	 */
	public Integer queryBusModelAllMeterCount(Map<String, Object> map);
	
	/**
	 * 带条件分页查询list
	 * 
	 * @param map
	 * @return
	 */
	public List<ModelMeterPlan> queryPageBusModelAllMeterList(Map<String, Object> map);
	
	/**
	 * 根据模具番号查询入库材料信息
	 * @param modelCode
	 * @return
	 */
	public List<ModelMeterPlan> queryModelMeterPlanFinished(String modelCode);
	/**
	 * 修改库存数量
	 * @param map
	 */
	public void updateModelMeterAvaliablAmount(Map<String, Object> map);
	/**
	 * 根据部品番号查询材料信息
	 * @param modelCode
	 * @return
	 */
	public ModelMeterPlan getMeterInfoByModelCode(String modelCode);
	/**
	 * 获取下发列表
	 * @param map
	 * @return
	 */
	public List<ModelMeterPlan> getMeterGiveRecord(Map<String, Object> map);
	
	public Integer getMeterGiveRecordCount(Map<String, Object> map);
	/**
	 * 根据id查询材料信息
	 * @param id
	 * @return
	 */
	public ModelMeterPlan getMeterInfoById(String id);
	/**
	 * 获取材料使用数量
	 * @param map
	 * @return
	 */
	public Integer getMeterUsedAmount(Map<String, Object> map);
	/**
	 * 获取材料支给数量
	 * @param map
	 * @return
	 */
	public Integer getMeterGiveAmount(Map<String, Object> map);

	List<ModelMeterPlan> getLssuedDetails(Integer modelPlanId);

	ModelMeterPlan getLssuedDetailsToEdit(Integer id);

	void updateLssuedDetails(ModelMeterPlan modelMeterPlan);
	/**
	 * 根据id查询材料信息
	 * @param id
	 * @return
	 */
	public ModelMeterPlan queryMeterInfoById(Integer id);
	/**
	 * 根据id修改材料信息
	 * @param id
	 * @return
	 */
	public void editMeterInfoById(ModelMeterPlan modelMeterPlan);
	/**
	 * 根据材料id修改材料信息
	 * @param id
	 * @return
	 */
	public void editMeterPlanByMeterId(ModelMeterPlan modelMeterPlan);
	/**
	 * 根据材料id修改材料信息
	 * @param id
	 * @return
	 */
	public void editMeterGiveByMeterId(ModelMeterPlan modelMeterPlan);
}
